package com.itheima.jdk;

import sun.misc.ProxyGenerator;

import java.io.FileOutputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;


/**
 * 使用 jdk内置的一个方法 来帮我们做
 */
public class Test3 {
    public static void main(String[] args) throws Exception {


        //加载类?

        Class<?> loadClass = Test3.class.getClassLoader().loadClass("com.itheima.jdk.QQ3");


        //System.out.println(loadClass.getName());


        //调用构造函数
        Constructor<?> constructor = loadClass.getConstructor(InvocationHandler.class);


        //给他一个invocationHandler对象
        MyInvocationHandler myInvocationHandler = new MyInvocationHandler();
        //使用接口接受 多态特性
        Car o = (Car) constructor.newInstance(myInvocationHandler);
        o.didi();
        // this.h.invoke(){
        //  System.out.println("我是一个实现类InvocationHandler  ");
        // }
        o.start();
        //// this.h.invoke(){
        //        //  System.out.println("我是一个实现类InvocationHandler  ");
        //        // }
        o.stop();
        // this.h.invoke(){
        //  System.out.println("我是一个实现类InvocationHandler  ");
        // }


    }
    //他才是真正的干活的对象
    private static class MyInvocationHandler implements InvocationHandler{

        @Override
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            System.out.println("我是一个实现类InvocationHandler  ");
            return null;
        }
    }
}
